/*给定由若干 0 和 1 组成的数组 A。我们定义 N_i：从 A[0] 到 A[i] 的第 i 个子数组被解释为一个二进
* 制数（从最高有效位到最低有效位）。
* 返回布尔值列表 answer，只有当 N_i 可以被 5 整除时，答案 answer[i] 为 true，否则为 false。
*
* 输入：[0,1,1]
* 输出：[true,false,false]
* 解释：输入数字为 0, 01, 011；也就是十进制中的 0, 1, 3 。只有第一个数可以被 5 整除，因此 answer[0] 为真。
* */

package easy_leetcode;
import java.util.*;

public class binaryPrefix {

    public static void main(String[] args){

        binaryPrefix obj = new binaryPrefix();
        int[] A = {0,1,1};
        System.out.println(obj.prefixDivBy5(A));
    }

    public List<Boolean> prefixDivBy5(int[] A){

        List<Boolean> l = new ArrayList<>();
        int num = 0;
        //可用下面的方法求二进制数的十进制结果
        for (int i = 0;i < A.length;i++){

            num = num *  2 + A[i];
            num %= 5;
            l.add(num==0);
        }
        return l;
    }
}
